Принятие Вас имеет две программы, которые обрабатывают эти два файла, process_in.exe и process_out.exe:
for %%f in (*.in) do (
echo %%~nf
process_in "%%~nf.in"
process_out "%%~nf.out"
)
%% ~nf является модификатором замены, который разворачивает %f до имени файла только. Посмотрите другие модификаторы в https://technet.microsoft.com/en-us/library/bb490909.aspx (на полпути ниже на страницу) или только в следующем ответе.
Невозможно заставить среду CLR игнорировать поле. Вместо этого я бы использовал две структуры и, возможно, сделал бы одну часть другой.
struct MyNativeStructure
{
public int foo;
public int bar;
}
struct MyStructure
{
public MyNativeStruct native;
public int ignored;
}
Два метода:
Используйте класс вместо структур: структуры всегда передаются по указателю на API Windows или другие собственные функции. Замена вызова на Dottis (MyStruct ref mystruct)
с вызовом Dottis ([in, Out] MyClass)
должен сделать трюк. После этого вы сделали это, вы можете просто получить доступ к вашим неразрушенным полям с методами.
Как я уже говорил, структуры (почти) всегда проходят посредством ссылки: отсюда, следовательно, Callee ничего не знает о структуре Размеры: как насчет просто оставляя свои дополнительные поля, чтобы быть последними? При вызове родной функции, которая нуждается в указателе вашей структуры и размер структуры, просто ложь о своем размере, давая бы тот, который он будет без ваших дополнительных полей. Я не знаю, является ли это законный способ маршала такую структуру обратно при получении его из родной функции. Вопрос на сторону: Поля класс процессов Marshaller отмечены личными? (Я надеюсь, что нет ...)