Freigeben über


FSCTL_SRV_REQUEST_RESUME_KEY Steuerungscode

Der FSCTL_SRV_REQUEST_RESUME_KEY-Steuerelementcode wird verwendet, um einen undurchsichtigen Dateiverweis zur Verwendung mit dem IOCTL_COPYCHUNK-Steuerelementcode abzurufen.

Um diesen Vorgang auszuführen, rufen Sie die DeviceIoControl-Funktion mit den folgenden Parametern auf.

BOOL DeviceIoControl(
  (HANDLE) hDevice,             // handle to device
  FSCTL_SRV_REQUEST_RESUME_KEY, // dwIoControlCode
  NULL,                         // lpInBuffer
  0,                            // nInBufferSize
  (LPVOID) lpOutBuffer,         // output buffer
  (DWORD) nOutBufferSize,       // size of output buffer
  (LPDWORD) lpBytesReturned,    // number of bytes returned
  (LPOVERLAPPED) lpOverlapped   // OVERLAPPED structure
);

Parameter

hDevice [in]

Ein Handle für die Datei, für die der Quelldateischlüssel angefordert werden soll. Um dieses Handle zu erhalten, rufen Sie die CreateFile-Funktion auf.

dwIoControlCode [in]

Der Steuerelementcode für den Vorgang. Verwenden Sie für diesen Vorgang FSCTL_SRV_REQUEST_RESUME_KEY .

lpInBuffer

Nicht für diesen Vorgang verwendet; auf NULL festgelegt.

nInBufferSize [in]

Nicht für diesen Vorgang verwendet; auf 0 (null) festgelegt.

lpOutBuffer [out]

Ein Zeiger auf den Ausgabepuffer, eine SRV_REQUEST_RESUME_KEY-Struktur . Weitere Informationen finden Sie im Abschnitt mit Hinweisen.

nOutBufferSize [in]

Die Größe des Ausgabepuffers in Bytes.

lpBytesReturned [out]

Ein Zeiger auf eine Variable, die die Größe der im Ausgabepuffer gespeicherten Daten in Bytes empfängt.

Wenn der Ausgabepuffer zu klein ist, schlägt der Aufruf fehl, die GetLastError-Funktion gibt ERROR_INSUFFICIENT_BUFFER zurück, und lpBytesReturned ist null.

Wenn der lpOverlapped-ParameterNULL ist, kann lpBytesReturned nicht NULL sein. Auch wenn ein Vorgang keine Ausgabedaten zurückgibt und der lpOutBuffer-ParameterNULL ist, verwendet DeviceIoControllpBytesReturned. Nach einem solchen Vorgang ist der Wert von lpBytesReturned bedeutungslos .

Wenn lpOverlapped nicht NULL ist, kann lpBytesReturnedNULL sein. Wenn lpOverlapped nicht NULL ist und der Vorgang Daten zurückgibt, ist lpBytesReturned bedeutungslos , bis der überlappende Vorgang abgeschlossen ist. Rufen Sie die GetOverlappedResult-Funktion auf, um die Anzahl der zurückgegebenen Bytes abzurufen. Wenn der hDevice-Parameter einem E/A-Abschlussport zugeordnet ist, können Sie die Anzahl der zurückgegebenen Bytes abrufen, indem Sie die GetQueuedCompletionStatus-Funktion aufrufen.

lpOverlapped [in]

Ein Zeiger auf eine OVERLAPPED-Struktur .

Wenn der hDevice-Parameter geöffnet wurde, ohne FILE_FLAG_OVERLAPPED anzugeben, wird lpOverlapped ignoriert.

Wenn hDevice mit dem flag FILE_FLAG_OVERLAPPED geöffnet wurde, wird der Vorgang als überlappender (asynchroner) Vorgang ausgeführt. In diesem Fall muss lpOverlapped auf eine gültige OVERLAPPED-Struktur verweisen, die ein Handle für ein Ereignisobjekt enthält. Andernfalls schlägt die Funktion auf unvorhersehbare Weise fehl.

Bei überlappenden Vorgängen gibt DeviceIoControl sofort zurück, und das Ereignisobjekt wird signalisiert, wenn der Vorgang abgeschlossen wurde. Andernfalls wird die Funktion erst zurückgegeben, wenn der Vorgang abgeschlossen wurde oder ein Fehler auftritt.

Rückgabewert

Wenn der Vorgang erfolgreich abgeschlossen wird, gibt DeviceIoControl einen Wert ungleich null zurück.

Wenn der Vorgang fehlschlägt oder aussteht, gibt DeviceIoControl null zurück. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.

Bemerkungen

Dieser Steuerelementcode enthält keine zugeordnete Headerdatei. Sie müssen den Steuerelementcode und die Datenstrukturen wie folgt definieren.

#define FSCTL_SRV_REQUEST_RESUME_KEY CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 30, METHOD_BUFFERED, FILE_ANY_ACCESS)

typedef struct _SRV_RESUME_KEY {
    UINT64 ResumeKey;
    UINT64 Timestamp;
    UINT64 Pid;
} SRV_RESUME_KEY, *PSRV_RESUME_KEY;

typedef struct _SRV_REQUEST_RESUME_KEY {
    SRV_RESUME_KEY Key;
    ULONG  ContextLength;
    BYTE   Context[1];
} SRV_REQUEST_RESUME_KEY, *PSRV_REQUEST_RESUME_KEY;

Diese Member können wie folgt beschrieben werden.

Member Beschreibung
ResumeKey
Ein undurchsichtiger Wert, der die Quelldatei für den Server identifiziert.
Timestamp
Ein undurchsichtiger Wert, der den Zeitpunkt angibt, zu dem die Datei geöffnet wurde.
Pid
Ein undurchsichtiger Wert, der den Prozess identifiziert, der die Datei geöffnet hat.
Schlüssel
Eine SRV_RESUME_KEY-Struktur . Um einen serverseitigen Kopiervorgang auszuführen, verwenden Sie diese Struktur mit dem IOCTL_COPYCHUNK-Steuerelementcode.
ContextLength
Dieses Mitglied ist für die Systemnutzung reserviert; nicht verwenden.
Kontext
Dieses Mitglied ist für die Systemnutzung reserviert; nicht verwenden.

 

Siehe auch

Deviceiocontrol

IOCTL_COPYCHUNK